﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sjt_windowsform20200529
{
    public partial class Form2 : Form
    {
        // 定义数据库常用的操作类
        // 数据库连接对象
        private SqlConnection conn = null;
        // 数据库操作适配器
        private SqlDataAdapter sda = null;
        // 数据库查询器
        private SqlCommand cmd = null;
        // sqlserver数据库连接串
        private const string strUrl = "Server=.;Database=db202005;User ID=sa;Password=sqlserver2014;Trusted_Connection=False;";

        // 数据库的转出容器对象
        DataSet ds = new DataSet();  // 存储的是key：value    value就是DataTable
        DataTable dt = new DataTable();


        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            // TODO: 这行代码将数据加载到表“db202005DataSet.userInfo”中。您可以根据需要移动或删除它。
            //this.userInfoTableAdapter.Fill(this.db202005DataSet.userInfo); // 使用这一行代码查询数据，需要配置数据源

            // 不配置数据源，可以采用以下方式进行手动加载
            // 1、获取数据库连接对象
            conn = new SqlConnection(strUrl);
            // 数据库查询语句
            String strSql = "select * from userinfo";
            // 2、获取数据库操作适配器对象
            sda = new SqlDataAdapter(strSql, conn);
            // 3、将数据库操作适配器中的数据转移到数据存储对象中：DataSet（包含多张datatable）、DataTable（包含多行数据 DataRow）
            //sda.Fill(dt);
            sda.Fill(ds,"userinfos");
            // 将数据dt绑定到datagridview空间的数据源属性上
            //this.dataGridView1.DataSource = dt;
            this.dataGridView1.DataSource = ds.Tables["userinfos"];
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 新增和修改
            // 使用commondBuilder进行自动处理
            SqlCommandBuilder scb = new SqlCommandBuilder(sda);
            // 数据源适配器对象更新dataGridView1.DataSource绑定的数据集合对象 
            sda.Update(ds.Tables["userinfos"]);
            //////////////////////////////////////////// 新增之后，不显示id的bug； 重新后去数据集合ds，然后重新绑定datagridview的数据源，即可
            // 重新绑定数据源，强制更新数据
            ds = new DataSet();
            sda.Fill(ds, "userinfos");
            // 将数据dt绑定到datagridview空间的数据源属性上
            //this.dataGridView1.DataSource = dt;
            this.dataGridView1.DataSource = ds.Tables["userinfos"];
            ///////////////////////////////////////////////////
            // 更新通知
            MessageBox.Show("数据更新成功!");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // 删除操作
            // 删除datagridview对象中的数据行
            this.dataGridView1.Rows.RemoveAt(this.dataGridView1.CurrentCell.RowIndex);
            // 使用commondBuilder进行自动处理
            SqlCommandBuilder scb = new SqlCommandBuilder(sda);
            // 更新数据库
            sda.Update(ds.Tables["userinfos"]);
            // 删除通知
            MessageBox.Show("数据删除成功!");

        }
    }
}
